/*
 vamos a tener tres vectores, uno para almacenar datos con n numeros generados 
 aleatoriamente de minimo 4 cifras que representa la cantidad de habitantes
 el 2do vector almacenará n nombres de ciudades, y el 3er vector almacenará informacion de areas
 en km2de las n ciudades anteriores . con toda la informacion generada se va a construir 
 una matriz donde almacenará la informacion
 ejem:
 vector 1(ciudades)    ibarra       otavalo       urcuqui
 vector 2 (habitantes) 105336       99512         1021
 vector 3 (extension)  3475,25 m2   3125,45 mm2   597.4 m2
 parametros: 
 -se solicita que muestre todos los parametros en pantalla y mostrar cual es la
 ciudad que contiene la mayor y menor cantidad de habitantes
 -Indicar cual es la ciudad con mayor extension de territorio
 -Muestre la cantidad total de habitantes de las n ciudades
 -Ponga un boton NUEVO para seguir utilizando la aplicacion
 COmo debe realizar:
 -Crear una clase buscadores, donde contenga los metodos de busqueda e inicialice los 
 3  vectores y por lo menos un constructor no vacio
 */
package examenhabitantes;

import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author D4y4
 */
public class principal extends javax.swing.JFrame {

    int[] cantidadHabitantes;
    generarAleatorios genecl;
    String[] nombresCiudades;
    int[] area;
    int cantidad;
    DefaultTableModel mitableModel;

    public principal() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jtxtCantidad = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton2 = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jtxtNombres = new javax.swing.JTextField();
        jbtnCiudad = new javax.swing.JButton();
        btnAgregarCiudades = new javax.swing.JButton();
        cmbCiudades = new javax.swing.JComboBox();
        cmbabitantes = new javax.swing.JComboBox();
        cmbextncion = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        lblmenorc = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        lblmayorc = new javax.swing.JLabel();
        lblmenorh = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        lblmayorh = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        NUMSU = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel1.setText("Ingrese la cantidad");
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 30, -1, -1));
        getContentPane().add(jtxtCantidad, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 20, 87, -1));

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jScrollPane1.setViewportView(jTable1);

        getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 530, 160));

        jButton2.setText("Nuevo");
        getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 410, -1, -1));

        jLabel2.setText("Ingrese los nombres de las ciudades");
        getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, -1, -1));
        getContentPane().add(jtxtNombres, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 50, 150, 30));

        jbtnCiudad.setText("leer  ciudad");
        jbtnCiudad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtnCiudadActionPerformed(evt);
            }
        });
        getContentPane().add(jbtnCiudad, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 50, -1, -1));

        btnAgregarCiudades.setText("Agregar Ciudades");
        btnAgregarCiudades.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarCiudadesActionPerformed(evt);
            }
        });
        getContentPane().add(btnAgregarCiudades, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 120, -1, -1));

        getContentPane().add(cmbCiudades, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 150, 170, -1));

        getContentPane().add(cmbabitantes, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 150, 170, -1));

        getContentPane().add(cmbextncion, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 150, 170, -1));

        jLabel3.setText("EXTENCIO0N");
        getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 120, -1, -1));

        jLabel4.setText("HABITANTES");
        getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 130, -1, -1));

        lblmenorc.setText("jLabel5");
        getContentPane().add(lblmenorc, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 190, -1, -1));

        jLabel6.setText("Mayor ciud T");
        getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 190, -1, -1));

        jLabel7.setText("Menor Ciudad T");
        getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 190, -1, -1));

        lblmayorc.setText("jLabel5");
        getContentPane().add(lblmayorc, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 190, -1, -1));

        lblmenorh.setText("jLabel5");
        getContentPane().add(lblmenorh, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 220, -1, -1));

        jLabel8.setText("Mayor hA");
        getContentPane().add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 220, -1, -1));

        jLabel9.setText("Menor H A");
        getContentPane().add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 220, -1, -1));

        lblmayorh.setText("jLabel5");
        getContentPane().add(lblmayorh, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 220, -1, -1));

        jLabel5.setText("SUMA");
        getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(430, 200, -1, -1));

        NUMSU.setText("jLabel10");
        getContentPane().add(NUMSU, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 200, -1, -1));

        pack();
    }// </editor-fold>//GEN-END:initComponents
    int contadorCiudad = 0;
    int col = 3;
    private void jbtnCiudadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnCiudadActionPerformed
        String nombre = jtxtNombres.getText();
        if (contadorCiudad <Integer.parseInt(jtxtCantidad.getText()))//solo dejara agregar hasta maximo l numero q asigno anteriorment
        {
            cmbCiudades.addItem(nombre);
            contadorCiudad++;
        } else {
            //ahi pon solo l mensaje
            JOptionPane.showMessageDialog(null, "Ya no puede Ingresar mas cantidades");
        }
    }//GEN-LAST:event_jbtnCiudadActionPerformed
    public void agregarInformacionAtablas(JComboBox nombrescI, JComboBox Habi, JComboBox exte, int col) {
//        ASIGNAMOS LA INFORMACION COMPLETA DL OBJETO TABLA
        //s
        mitableModel = (DefaultTableModel) jTable1.getModel();
        mitableModel.setNumRows(3);
        mitableModel.setColumnCount(col);

//ciudades
        for (int j = 0; j < col; j++) {

            mitableModel.setValueAt(nombrescI.getItemAt(j), 0, j);
        }

        //habitantes
        for (int j = 0; j < col; j++) {
            mitableModel.setValueAt(Habi.getItemAt(j), 1, j);
        }

        //extencion
        for (int j = 0; j < col; j++) {
            mitableModel.setValueAt(exte.getItemAt(j), 2, j);
        }

    }

    //LLENAR CUALQUIER COMBO BOX QUE RECIBE COMO PARAMETRO UN VECTOR Y EL NOMBRE DEL COMBO BOX
    //VERSION NUEVA :3
    public void llenarComboboxX(int arregloDatos[], JComboBox comboBoxX) {
        int datoArreglo;
        for (int i = 0; i < arregloDatos.length; i++) {
            datoArreglo = arregloDatos[i]; //Obtiene la informacion de cada celda
            comboBoxX.addItem(datoArreglo);
        }
    }

    public int mayor(int arregloDatos[]) {

        int mayor;
        int pos = 0;
        mayor = arregloDatos[0];

        for (int f = 1; f < arregloDatos.length; f++) {
            if (arregloDatos[f] > mayor) {
                mayor = arregloDatos[f];
                pos = f;

            }
        }
        return pos;
    }

    public int menor(int arregloDatos[]) {

        int mayor;
        int pos = 0;
        mayor = arregloDatos[0];

        for (int f = 1; f < arregloDatos.length; f++) {
            if (arregloDatos[f]<mayor ) {
                mayor = arregloDatos[f];
                pos = f;

            }
        }
        return pos;
    }
    int fila = 0;
    int[] cantidadTerritorio;
    private void btnAgregarCiudadesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarCiudadesActionPerformed
        // TODO add your handling code here:

        genecl = new generarAleatorios();
        cantidadHabitantes = genecl.numeroHabitantes(Integer.parseInt(jtxtCantidad.getText()));
        cantidadTerritorio = genecl.numeroHabitantes(Integer.parseInt(jtxtCantidad.getText()));
        llenarComboboxX(cantidadHabitantes, cmbabitantes);
        llenarComboboxX(cantidadTerritorio, cmbextncion);

        int mayorH = mayor(cantidadHabitantes);
        lblmayorh.setText(String.valueOf(cmbCiudades.getItemAt(mayorH)));

        int mayorT = mayor(cantidadTerritorio);
        lblmayorc.setText(  String.valueOf(cmbCiudades.getItemAt(mayorT)));
        
        int menorH = menor(cantidadHabitantes);
        lblmenorh.setText(String.valueOf(cmbCiudades.getItemAt(menorH)));
        int menorT = menor(cantidadHabitantes);

        lblmenorc.setText(String.valueOf(cmbCiudades.getItemAt(menorT)));

        agregarInformacionAtablas(cmbCiudades,cmbabitantes,cmbextncion, Integer.parseInt(jtxtCantidad.getText()));

    }//GEN-LAST:event_btnAgregarCiudadesActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new principal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel NUMSU;
    private javax.swing.JButton btnAgregarCiudades;
    private javax.swing.JComboBox cmbCiudades;
    private javax.swing.JComboBox cmbabitantes;
    private javax.swing.JComboBox cmbextncion;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JButton jbtnCiudad;
    private javax.swing.JTextField jtxtCantidad;
    private javax.swing.JTextField jtxtNombres;
    private javax.swing.JLabel lblmayorc;
    private javax.swing.JLabel lblmayorh;
    private javax.swing.JLabel lblmenorc;
    private javax.swing.JLabel lblmenorh;
    // End of variables declaration//GEN-END:variables
}
